package com.shujia.day12;

import java.util.ArrayList;
import java.util.Collection;

/*
    到目前位置，我们学习过哪些可以存储元素的容器：
    1、数组
        优点：不同的数组可以存储不同数据类型的元素
        缺点：长度不可变
    2、StringBuffer|StringBuilder
        优点：长度可以跟随元素的数量而改变
        缺点：里面的元素只有一种字符数据类型

    我们今后会根据元素的是否重复，存储和取出的顺序等来决定我们该使用什么样的容器来进行存储
    根据我现实生活中经验来说，容器应该是丰富多彩的，多种多样的
    java应该要使用若干个不同的类来描述不同的容器，表示不同容器的特点。
    容器应该都有若杠共同的特点，都可以装东西等。
    那么java中提供的这些类中成员应该也会有相同的部分，那我们将其向上提取，由继承或实现来构建关系
    这样我们就可以得到一个继承体系。

    Collection【接口】:
        我们通过帮助文档发现，Collection是一个接口，不能直接new对象
        根据元素是否可以发生重复，继续分类
        - List【接口】元素可以发生重复，且有索引的概念
            ArrayList
        - Set【接口】元素不可以发生重复，没有索引

   借助ArrayList子类对象来使用Collection接口中的方法

   学习java中任意一个集合的步骤：
    1、创建相关集合对象
    2、创建元素对象
    3、将元素添加到集合中
    4、遍历集合

    Collection中的成员方法：
        boolean add(E e)
        boolean remove(Object o)
        void clear()
        boolean contains(Object o)
        boolean isEmpty()
        int size()



 */
public class CollectionDemo1 {
    public static void main(String[] args) {
        //借助ArrayList创建对象来使用Collection接口中的方法
        // 1、创建相关集合对象
        Collection c1 = new ArrayList();

        //boolean add(Object e)
        c1.add(100); //这里涉及到自动装箱 int -> Integer
        c1.add(true);
        c1.add(12.34);
        c1.add(1000L);
        c1.add(100);
        c1.add(12.34);
        // 重写toString()方法的类是ArrayList类的父类的父类中重写的。
        // 底层是使用StringBuilder实现的
        System.out.println("c1: " + c1);
        //注意：我们今后使用集合的时候，规定一个集合只能存储一种数据类型的元素
        System.out.println("-----------------------------------------");
        //[100, true, 12.34, 1000, 100, 12.34]
        //boolean remove(Object o) 从集合中删除一个元素,只会删除最左边的一个匹配元素
        c1.remove(100);
        System.out.println("c1: " + c1);
        System.out.println("-----------------------------------------");
        //void clear() 清空集合元素
//        c1.clear();
//        System.out.println("c1: " + c1);
        System.out.println("-----------------------------------------");
        //boolean contains(Object o) 判断Collection集合中是否包含某个元素
        System.out.println(c1.contains(12.34));
        System.out.println("-----------------------------------------");
        //boolean isEmpty() 判断Collection集合是否为空
        System.out.println(c1.isEmpty());
        System.out.println("-----------------------------------------");
        //int size() 获取集合的长度【元素的个数】
        System.out.println(c1.size());


    }
}
